function createPromise(tag, timeout) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      if (Math.random() < 0.8) {
        resolve(`${tag} 正常`)
      } else {
        reject(`${tag} 异常`)
      }
    }, timeout)
  })
}

/**
 * Promise.all()
 *  ● 并发执行
 *  ● 所有 Promise 执行完成后得到结果
 *  ● 所有 Promise 都执行成功时，onfulfilled 被执行，参数是所有执行结果组成的数组
 *  ● 有 Promise 执行失败时，onrejected 被执行，参数是第一个（根据数组索引）执行失败的 Promise 的原因
 */
Promise.all([
  createPromise('Promise', 2000),
  createPromise('Promise 2', 1000),
  createPromise('Promise 3', 3000)
])
  .then(res => {
    console.log(Array.isArray(res)) // true
    console.log(res[0]) // Promise 正常
    console.log(res[1]) // Promise 2 正常
    console.log(res[2]) // Promise 3 正常
  })
  .catch(res => {
    console.log(res)
  })
